草庐IT

Java CLI 解析器

全部标签

c++ - 为什么不能正确解析显式析构函数调用中的限定类型名称?

考虑一个例子。#includestructS{S(){new(&s)std::string("hi");}~S(){//doesnotcompile//s.~std::string();//compilesusingstd::string;s.~string();}union{std::strings;};};为什么注释掉的部分编译不了?我从clang得到的错误消息显示编译器将std本身解析为一个类型。identifier'std'inobjectdestructionexpressiondoesnotnameatype为什么编译器不能确定std::string是类型?这在某种程度上是

熔断机制解析:如何用Hystrix保障微服务的稳定性

微服务与系统的弹性设计大家好,我是小黑,在讲Hystrix之前,咱们得先聊聊微服务架构。想象一下,你把一个大型应用拆成一堆小应用,每个都负责一部分功能,这就是微服务。这样做的好处是显而易见的,更新快,容错性强,每个服务可以独立部署,挺美的对吧?但是,问题也随之而来,这些服务之间怎么通信?如果一个服务挂了怎么办?这就引出了“弹性设计”的概念。弹性设计,听起来就很有弹性,实际上也确实如此。它是一种让系统能够应对各种意外情况的设计哲学。比如,一个服务不小心挂了,弹性设计能让这个系统继续运行,而不是整个崩溃。这里面有几个常见的模式,比如重试、限流、熔断等。咱们重点说一说熔断。这个概念借鉴了电路中的熔断

c++ - 数组衰减到指针和重载解析

我希望能够在重载决策中区分数组和指针:classstring{public:string(constchar*c_str);templatestring(constchar(&str)[N]);};intmain(){constchar*c_str="foo";stringfoo(c_str);//okwillcallstring(constchar*)stringbar("bar");//callstring(constchar*)insteadofthearrayversion}到目前为止我发现的最好的方法是使用对指针的引用而不是指针:classstring{public:stri

c++ - 通过隐式转换为字符串流式传输对象时重载解析失败

免责声明:我知道应该避免隐式转换为字符串,正确的方法是opPerson过载.考虑以下代码:#include#include#includestructNameType{operatorstd::string(){return"wobble";}};structPerson{NameTypename;};intmain(){std::cout它yieldsthefollowingonGCC4.3.4:prog.cpp:Infunction‘intmain()’:prog.cpp:18:error:nomatchfor‘operator&std::basic_ostream::operat

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

什么是undefinedreference/未解析的外部符号错误?常见原因是什么以及如何修复/预防它们? 最佳答案 编译C++程序需要几个步骤,如2.2(creditstoKeithThompsonforthereference)所指定的那样:Theprecedenceamongthesyntaxrulesoftranslationisspecifiedbythefollowingphases[seefootnote].Physicalsourcefilecharactersaremapped,inanimplementation-

c++ - 关于最令人烦恼的解析的一个令人困惑的细节

我的问题是如何将以下行解析为函数声明:vectorv(istream_iterator(cin),istream_iterator());我理解MostVexingParse的大部分细节,以及为什么第二个临时迭代器可以解释为一种返回迭代器且不带参数的函数类型,但我不明白的是为什么第一个临时迭代器迭代器可以解释为一种类型。它代表什么类型?我的想法是它会是某种函数类型,但我看不出名字cin是怎么来的习惯了。它是否声明该参数是一个istream_iterator名为cin?如果是这样,是否意味着您可以任意将函数参数的名称括起来?如果是这样,为什么? 最佳答案

c++ - 在基于 yacc 的解析器中防止内存泄漏的最佳方法是什么?

Yacc不允许传递对象。因为%union只能包含POD类型,所以必须新建复杂对象并通过指针传递。如果出现语法错误,yacc解析器就会停止运行,并且对所有这些创建的对象的引用都会丢失。我想出的唯一解决方案是所有新对象都继承一个特定的基类,在分配时添加到容器中,如果出现错误,该容器中的所有内容都可以删除。有谁知道解决此问题的更好的yacc技巧?请不要告诉我选择不同的解析器。 最佳答案 我喜欢Yacc,但有区别的union栈确实带来了挑战。不知道你用的是C还是C++。我修改了Yacc以生成C++用于我自己的目的,但这个解决方案可以适应C。

c++ - 如何根据 C++ 中的语言环境设置解析双重格式

我发现我一直使用的strtod方法有问题。首先它不理解非点小数点分隔符,所以我不得不使用这个:std::replace(sSource.begin(),sSource.end(),getDecimalSeparator(),'.');但是不,我发现了另一个问题,但还没有找到解决方法。如果值为负数并且千位分隔符是一个点(“.”),strtod返回0并且_EndPtr指向字符串的开头://PRECONDITIONS://*digitgroupingsymbol(thousandsseparator)="."//*decimalsymbol=","//*digitalgrouping="12

c++ - 是否应允许模板模板参数接收从先前参数解析的参数?

我在g++4.4和4.5上发现了一个奇怪的问题。我问过这个问题是因为我认为我在代码中犯了一些愚蠢的错误。原帖为here但为了发布的完整性,我将在此处重新发布有问题的代码:$cattemplatetemplate.cctemplatestructLabelTypeMap{typedefinttype_t;};templatestructHold{typedefinttype;};templateclasstypeMap>structWhatever{};templatestructNow{typedefWhatever,LabelTypeMap>concrete_t;};Now::con

Typescript AST解析器忽略句子之间的断线

我对如何打字给AST的分解有疑问。我的目标是能够计算导入和类声明之间有多少个断点。我认为可以使用每个语句的开始和结束位置来做到这一点。但是,事实证明,打字稿解析器忽略了断裂线。如果图像还不够清晰,我会指出classDeclaration在巴比伦解析器开始116而在打字稿中,解析器开始113.我想知道为什么会发生这种情况以及如何使用Typescript解决它,或者有任何解决方法?我在用着tslint创建自定义规则.打字稿AST解析器https://astexplorer.net/#/gist/ffa8dc62cec5bea5a5a5a5f76ca978af53b1/306e2bd99d0c285